from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import redirect, reverse
import re
from iStudy import settings


class AuthMiddleWare(MiddlewareMixin):

    def process_request(self, request):
        # 需要登录后，访问的地址。（判断登录状态）
        # 默认所有的地址需要登录才能访问
        # 设置一个白名单，不登陆就能访问
        url = request.path_info  # 获取url

        # 白名单
        for i in settings.WHITE_LIST:
            if re.match(i, url):
                return
        else:
            # 校验登录状态
            is_login = request.session.get('is_login')
            if is_login:
                # 已经登录了，可以访问了
                return
            # 没有登录，需要登录
            else:
                return redirect("{}?url={}".format(reverse('login'), url))
                # return redirect('login')
